package com.zou.jokes.sqlite;


import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.zou.jokes.Constant;
import com.zou.jokes.beans.BaseDataEntity;

import java.util.ArrayList;
import java.util.List;


/**
 * 数据库操作类  dao后缀的都是数据库操作类
 * <p>
 * 我们这里的每一个 增删改查 的方法都通过getWritableDatabase()去实例化了一个数据库,这里必须这么做
 * 不客气抽取 成为一个成员变量, 否则报错,若是觉得麻烦可以通过定义方法来置为null和重新赋值
 * <p>
 * —— 其实dao类在这里做得事情特别简单：
 * 1、定义一个构造方法，利用这个方法去实例化一个  数据库帮助类
 * 2、编写dao类的对应的 增删改查 方法。
 */
public class MyDao {

    private MySqliteOpenHelper mMyDBHelper;

    /**
     * dao类需要实例化数据库Help类,只有得到帮助类的对象我们才可以实例化 SQLiteDatabase
     *
     * @param context
     */
    public MyDao(Context context) {
        mMyDBHelper = new MySqliteOpenHelper(context);

    }


    /**
     * DownloadId long primary key,SongId String,DownloadTime long, Path String, SongName String, AuthorName String,State String
     * addtime,content,hashID,unixtime,updatetime,url
     *
     * @param addTime    添加时间;
     * @param content    内容
     * @param hashID     唯一hashID
     * @param unixtime   更新时间戳
     * @param updatetime 更新时间
     * @param url        图片链接
     */
    public long addDate(long addTime, String content, String hashID, long unixtime, String updatetime, String url) {

        SQLiteDatabase sqLiteDatabase = mMyDBHelper.getWritableDatabase();
        ContentValues  contentValues  = new ContentValues();

        contentValues.put("addTime", addTime);
        contentValues.put("content", content);
        contentValues.put("hashID", hashID);
        contentValues.put("unixtime", unixtime);
        contentValues.put("updatetime", updatetime);
        contentValues.put("url", url);


        long rowid = sqLiteDatabase.insert(Constant.tableName, null, contentValues);
        sqLiteDatabase.close();


        return rowid;
    }


    /**
     * 根据hashID删除条目
     *
     * @param hashID
     * @return
     */
    public int deleteDate(String hashID) {
        SQLiteDatabase sqLiteDatabase = mMyDBHelper.getWritableDatabase();
        String         arg            = hashID;
        int            deleteResult   = sqLiteDatabase.delete(Constant.tableName, "hashID=?", new String[]{arg});
        sqLiteDatabase.close();
        return deleteResult;
    }

    /**
     * 查询某条目是否存在
     *
     * @param hashID
     * @return
     */
    public boolean queryExists(String hashID) {
        SQLiteDatabase sqLiteDatabase = mMyDBHelper.getWritableDatabase();
        String         arg            = hashID;
        Cursor         cursor         = sqLiteDatabase.query(Constant.tableName, new String[]{"hashID"}, "hashID=?", new String[]{arg}, null, null, null);
//        有条目则返回true，没有则false
        if (cursor.moveToNext()) {
            cursor.close(); // 记得关闭 corsor
            sqLiteDatabase.close(); // 关闭数据库
            return true;
        } else {
            cursor.close(); // 记得关闭 corsor
            sqLiteDatabase.close(); // 关闭数据库
            return false;
        }

    }


    /**
     * 查询收藏的所有数据
     *
     * @return
     */
    public List<BaseDataEntity> getDatas() {
//        addTime,content,hashID,unixtime,updatetime,url
        List<BaseDataEntity> datas   = new ArrayList<>();
        long                 addTime = 0;
        String               hashID;
        String               content;
        long                 unixtime;
        String               updatetime;
        String               url;


        BaseDataEntity dataBean;


        SQLiteDatabase readableDatabase = mMyDBHelper.getReadableDatabase();

        Cursor cursor = readableDatabase.query(Constant.tableName
                , new String[]{"addTime", "content", "hashID", "unixtime", "updatetime", "url"}
                , null
                , null, null, null
                , "addTime desc");
        if (cursor.moveToFirst()) {
//            当cursor不是指向最后一行之后，读取所有元素
            while (!cursor.isAfterLast()) {
                addTime = cursor.getLong(0);
                content = cursor.getString(1);
                hashID = cursor.getString(2);
                unixtime = cursor.getLong(3);
                updatetime = cursor.getString(4);
                url = cursor.getString(5);

                dataBean = new BaseDataEntity(content, hashID, unixtime, updatetime, url);
                datas.add(dataBean);
                cursor.moveToNext();
            }
        }

//
//        if (cursor.moveToNext()) {
//            downloadId = cursor.getLong(0);
//            songId = cursor.getString(1);
//            downloadId = cursor.getLong(2);
//            path = cursor.getString(3);
//            songName = cursor.getString(4);
//            authorName = cursor.getString(5);
//            state = cursor.getString(6);
//
//            dataBean = new DataBean(downloadId, songId, downloadTime, path, songName, authorName, state);
//        }
        cursor.close(); // 记得关闭 corsor
        readableDatabase.close(); // 关闭数据库
        return datas;
    }


}